package dataProviders;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.LinkedList;

import dataBase.DataBaseController;
import entities.Pacjent;

public class PatientsDataProvider 
{
	public static LinkedList<Pacjent> getListOfAllPatients()
	{
		LinkedList<Pacjent> listaPacjentow = new LinkedList<Pacjent>();
		try 
		{
			ResultSet wynik = DataBaseController.db.dbSqlQuery( "SELECT pacjentID, imie, nazwisko, pesel, ulica, numer, kodPocztowy, miasto, telefon, email FROM Pacjent" );
			while( wynik.next() )
			{
				Pacjent pacjent = new Pacjent(wynik.getInt( "pacjentID" ), wynik.getString( "imie" ), wynik.getString( "nazwisko" ), wynik.getString( "pesel" ), wynik.getString( "ulica" ), wynik.getString( "numer" ), wynik.getString( "kodPocztowy" ), wynik.getString( "miasto" ), wynik.getString( "telefon" ), wynik.getString( "email" ));
				listaPacjentow.add( pacjent );
			}
			return listaPacjentow;
		}
		catch (SQLException e) 
		{
			e.printStackTrace();
			return null;
		}
	}

	public static int wiekPacjenta(int ID)
	{
		String pesel=null;
		String sql = "SELECT pesel FROM Pacjent WHERE pacjentID="+ID;
		ResultSet wynik;
		try {
			wynik = DataBaseController.db.dbSqlQuery( sql);
			while( wynik.next() )
			{
				pesel = wynik.getString("pesel");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		Calendar kal=Calendar.getInstance();
		return kal.get(Calendar.YEAR)-Integer.parseInt(19+pesel.substring(0,2));
	}
	public static Pacjent addPatient(String imie, String nazwisko, String pesel, String ulica, String numerDomu, String kodPocztowy, String miasto, String telefon, String email)
	{
		Pacjent p = new Pacjent( imie, nazwisko, pesel, ulica, kodPocztowy, miasto, telefon, email, numerDomu );

		String sql = "INSERT INTO Pacjent (imie, nazwisko, pesel, ulica, numer, kodPocztowy, miasto, telefon, email) " + "VALUES('"+p.getImie() +"','"+p.getNazwisko() +"','"+p.getPesel()+"','"+p.getUlica() +"','"+p.getNumerUlicy() +"','"+p.getKodPocztowy() +"','"+p.getMiasto() +"','"+p.getTelefon() +"','"+p.getEmail()+"')";
		try 
		{
			DataBaseController.db.dbSqlUpdate(sql);
			DataBaseController.db.dbCommit();
			p.setId( ostatnieIdPacjenta() );
			return p;
		}
		catch (SQLException e) 
		{
			System.out.println("SQL:nie udalo sie");
			e.printStackTrace();
			return null;
		}
	}
	private static int ostatnieIdPacjenta()
	{
		int ostatnieId = -1;
		try 
		{
			String sql ="SELECT IDENT_CURRENT('Pacjent') as \"id\"";
			ResultSet wynik = DataBaseController.db.dbSqlQuery( sql);
			while( wynik.next() )
			{
				ostatnieId = wynik.getInt("id");
			}
			return ostatnieId;
		} 
		catch(SQLException e) 
		{
			e.printStackTrace();
			return ostatnieId;
		}
	}
}




